Looker Studioの注意点 データ取込み方法が違うと未入力セルの扱いが違います
データアナリティクス事業本部の武田です。
今日は、未入力のセルのあるデータをLooker Studioに取り込んだ時の動作の違いについて比較のお話です。 未入力ならNULLだろうと思っていたのですが、どのように取り込んだかによって、Looker Studio内での扱いが違いました。
NULLと空文字と0の違い
NULLと空文字の違いについて、コーディングを経験したことのある方なら、「よくあること」として認識されていると思いますが、そもそもそんな概念は初めてとケースも多いため、あらためて解説します。
NULL=なにも存在しない状態、何も値が入っていないセル 空文字=長さ0の文字列のこと、 Excelだと””(ダブルクオテーション2つ)、MySQLだと''(シングルクオテーション2つ) 0=数字の0、数字の0が入っているのでNULLではない。
(似ている概念で、「空白」がありますが、空白にはスペースが入っていますので、未入力ではありません。空白はスペースという文字が入っています。)
NULLや空文字は、Excelでの取り扱いとDBの世界(BIツール含め)の取り扱いには、違いがあります。
Excelでは、何も入ってない未入力のセルは、自動的に0として扱われます。(0かどうかの条件分岐の関数を入れると、TRUEが返ってきます。)
DBの世界では、何も入ってない未入力のセルは、NULLとして扱われます。0ではありません。(0かどうかの条件分岐の関数を入れると、FALSEが返ってきます。)
用意したデータ
データは、Tableauをインストールした時についてくるサンプルスーパーストアのデータを加工したものです。地域に未入力セルを用意しました。
比較したいこと
CSV、Googleスプレッドシート、DB(BigQuery)、Google Cloud Strageに置いたCSVの4パターンで、 未入力セルがどのように違うのかを比較します。
下記の計算フィールドを使って比較しました。
IFNULL(地域, 'NULL')
NULLを判定する計算式:もし地域カラムがNULLだったら、文字列として「NULL」を返す。
IF(地域='','空文字',地域)
空文字を判定する計算式:もし地域カラムがNULLだったら、文字列として「空文字」を返す。
結果
計算フィールドで変換した結果をLooker Studioのテーブルで表示したのが下記です。一番下の行が未入力セルを集計したものです。
CSVから取り込んだ場合、NULLとして表示されています。
Googleスプレッドシートから取り込んだ場合、空文字として表示されています。
DB(BigQuery)から取り込んだ場合、NULLとして表示されています。
Google Cloud Strageに置いたCSVから取り込んだ場合、空文字として表示されています。
結果を一覧表にまとめました。
CSV | Googleスプレッドシート | DB(BigQuery) | Google Cloud Strageに置いたCSV |
---|---|---|---|
NULL | 空文字 | NULL | 空文字 |
(補足) CSVデータを直接Looker Studioに取り込んだ時、数量をデフォルト文字列として認識されてしまっていました。 手動で数値に変更したのですが、文字列として認識された時点で、未入力セルを空文字にしているのではないかと推測しています。 ちなみに、オーダー日も本来は日付型ですが文字列になってしまっており、ちょっと面倒です。
ふりかえり
同じ未入力セルなのに、取り込む方法によって「空文字」で扱われてしまうという結果になりました。 CSVデータ取込み時に自動で認識されたデータ型が「文字列」になっていることが影響していそうだなという気がしています。 未入力セルが入っていると、自動的に「文字列」になってしまいました。
今度は、メジャー(集計するカラム、例えば数量や売上のセル)にNULLが入った時に、集計ではどう扱われるかを検証してみたいと思います。
お知らせ
12/1(金)に下記のウェビナーに登壇します。
Amazon QuickSight×Amazon Redshiftのデモをお見せしながら、ダッシュボードを改善のポイントを説明します。